// --------------------------------------------------------------------------------
// PclTar 1.3.1 - readme.txt
// --------------------------------------------------------------------------------
// License GNU/GPL - Vincent Blavet - January 2003
// http://www.phpconcept.net
// --------------------------------------------------------------------------------

                                                  (Voir version Fran�aise � la fin)

0 - Sommaire
============
    1 - Introduction
    2 - Install
    3 - What's new
    4 - Using PclTar
    5 - Manual
    6 - Language
    7 - Known bugs
    8 - License
    9 - Warning
   10 - Author

1 - Introduction
================

  PclTar is a library that allow you to create a GNU TAR archive,
  to add files or directories, to extract all the archive or a part of it.
  So far tests show that the files generated by PclTar are readable by
  gzip tools and WinZip application.

  PclTar is made of the following files, placed in the same 'lib' directory :
    - pcltar.lib.php3
    - pcltrace.lib.php3
    - pclerror.lib.php3

  Today the libraries PclTrace and PclError are mandatory to run PclTar.

  The extension of the files can be modified to .php (or other) without any
  internal modification.

  The files can be put into any directory as far as the calling script/application
  has a valid path to it (see section using PclTar).


2 - Install
===========

  PclTar 1.3 is released in three format :

    - Zip traditionnal format (pcltar-1-3.zip),
    - Compressed GNU TAR format (pcltar-1-3.tgz),
    - PhpZip auto-extract PhpZip (pcltar-1-3.piz).

  The Zip and compressed GNU TAR file also include the auto-extract PhpZip file, which
  might be usefull for a remote auto-install.

  a. Zip archive
     Unzip the Zip file in a folder.
     The files are in the 'lib' directory, but may be moved in any other directory.

  b. Compressed GNU TAR archive
     Extract the Compressed GNU TAR file in a folder.
     The files are in the 'lib' directory, but may be moved in any other directory.

  c. Auto-extract PhpZip archive
     Download *** IN BINARY MODE *** the auto-extract PhpZip archive on your web site
     in the destination directory 'myfolder'.
     Launch the extract by calling http://mydomain.com/myfolder/pcltar-1-3.piz.php3.
     The files are automatically placed in the 'lib' directory of the 'myfolder'
     directory.

3 - What's new
==============

  In version 1.3.1 :

  - Remove deprecated call to functions with references

  In version 1.3 :

  - Add the function PclTarExtractIndex()
  - Correction of a bug with folders. When folder are archived, the size is sometime not
    null. PclTar now force the size to be zero when the archived file is a folder. When
    un-archiving the size is also forced to 0 when the item is a folder.
  - Modify function PclTarDelete() : When you give the name of a directory to be deleted, the
    directory entry and the files of the directory are deleted.
  - Correct bug in the path add/remove options in functions. When a path is removed,
    sometime the 'home' path was not.
  - Correct a bug in directory extraction : The directory is created but the status in
    the resulting file list is set to write_error.
  - Correct a bug : missing update of file cache (clearstatcache())

  In version 1.2 :

  - Add a new function PclTarMerge(), which allow to merge two archives.
  - Add the add_path/remove_path ability to the PclTarCreate() function
  - The add list/dir function now support empty directory. Before version 1.2, directories
    where not identified as separate entries, there where in the archive, only if there is at
    least one file.
  - Optimization of PclTarHandleAddList()

  In version 1.1 :

  - Adding check of header checksum while extracting a file from the archive,
  - Enhancement in POSIX header creation. In the first version PclTar use a temporary
    file for checksum calculation. It is now directly computed.
  - Adding field "status" in file description, remove fields "link", "magic", "version",
    "uname", "gname", "devmajor" and "devminor", because they do not carry interesting info.
  - While extracting, a check is done if the file exists or not. If an error occurs in the
    file extraction, the file is skipped, and the function tries to extract the next one.
    In previous release, the extraction was stopped.
  - While extracting a file, the mtime is now updated with the value stored in the archive.
    Note that the mode (R/W) is not set today (default RW).

  - New function PclTarDelete($tarname, $filelist), which deletes the files specified in
    $filelist.
  - New function PclTarUpdate(), which replace old files with new ones (depending of last
    modification date). If the file does not exist, it is added at the end of the archive.
  - Values for the file properties array :
    filename (with path),
    size,
    mode (decimal value of the octal value),
    uid,
    gid,
    mtime (last modification date like time() function result),
    typeflag ("0" or "" = file, "5" = directory, "1" = link),
    status (ok, added, updated, not_updated, already_a_directory,
            write_protected, newer_exist, path_creation_fail, write_error)
  - Add a "remove path" property in the extract functions. This allow to extract file
    in an other directory than the expected directory.
  - Add new function PclTarAddList()
  - Add parameter $p_mode in PclTarList()

4 - Using PclTar
========================

  In order to use PclTar 1.3, an application (or a script) must include
  the PclTar file pcltar.lib.php3.
  Because PclTar 1.3 include two other libraries (PclTrace and PclError), a
  way to include these libraries must be done. Several solutions are available :

  - Include each library in the application/script (in this order) :
    <?
    include ("my_lib_dir/pclerror.lib.php3");
    include ("my_lib_dir/pcltrace.lib.php3");
    include ("my_lib_dir/pcltar.lib.php3");
    [...]
    ?>

  - Give the library path knownledge to PclTar :
    <?
    $g_pcltar_lib_dir = "my_lib_dir";
    include ("my_lib_dir/pcltar.lib.php3");
    [...]
    ?>

  - Modify the $g_pcltar_lib_dir value in pcltar.lib.php3

  - Use the global include directory configured in php.ini, and modify the
    $g_pcltar_lib_dir value in pcltar.lib.php3 and set it to ''

  Note that PclTar file (pcltar.lib.php3) may be included several time without any
  problem. However this is not recomended for performance reason.

  After the include(s), the functions defined by PclTar can be directly used
  (see manual section).


5 - Manual
==========

  PclTar introduce functions to create, add, list, delete and extract files in a GNU
  TAR archive. The GNU TAR archive can be compressed or not.

  A more complete documentation of the PclTar function is available at
  http://www.phpconcept.net

  Each public function is documented in an appropriate header directly in the source
  code.



6 - Langage
===========

  PclTar was developped in PHP3 but is compatible with PHP4. The files
  extension can be modified without any action needed inside the files.

  PclTar code is fully documented (nearly step by step) in english.


7 - Known bugs
==============

  Here is a list of known bugs in PclTar 1.0 (not exhaustive list) :

  - Only GNU TAR archive with POSIX header are supported
  - While extracting a file, the header checksum is not checked.
  - While extracting a file, the last modified date is not checked with the one
    of the file that will be replaced.
  - While extracting a file, the file mode (access right by user, ...) is not
    reproduced.
  - While archiving a full directory, the directory it self is not archived.
  - While extracting a directory name the directory is created only if there is
    a file inside. Should be created even if no file is inside.

  Known bugs will be updated in http://www.phpconcept.net


8 - License
===========

  PclTar 1.3 Library is released under GNU/GPL license.
  This library is free, so you can use it at no cost.

  HOWEVER, if you release a script, an application, a library or any kind of
  code including PclTar library (or a part of it), YOU MUST :
  - Release your work under GNU/GPL license (free software),
  - You must indicate in the documentation (or a readme file), that your work
    include PclTar Library, and make a reference to the author and the web site
    http://www.phpconcept.net

  I will also appreciate that you send me a mail (vincent@blavet.net), just to
  be aware that someone is using PclTar (but this is not mandatory ;-) ).

  For more information : http://www.gnu.org

9 - Warning
=================

  This library and the associated files are non commercial, non professional work.
  It should not have unexpected results. However if any damage is caused by this software
  the author can not be responsible.
  The use of this software is at the risk of the user.

10 - Author
==========

  This software was written by Vincent Blavet (vincent@blavet.net) on its leasure time.



********************************************************************************
*                            VERSION FRANCAISE                                 *
********************************************************************************


0 - Sommaire
============
    1 - Introduction
    2 - Installation
    3 - Nouveaut�s
    4 - D�marrer avec PclTar
    5 - Manuel
    6 - Langage
    7 - Probl�mes connus
    8 - License
    9 - Avertissement
   10 - Auteur


1 - Introduction
================

  PclTar est une librairie qui vous permet de cr�er des archives au format GNU TAR ou GNU
  TAR compress�, d'ajouter des fichiers ou des dossiers entiers et d'extraire le contenu
  total ou partiel des archives.
  A pr�sent les tests ont montr� que les archives cr��es par PclTar sont lisibles par les
  outils tar et gzip, ainsi que l'application WinZip.

  PclTar est constitu�e des fichiers suivants, ils sont plac�s dans le dossier 'lib' :
    - pcltar.lib.php3
    - pcltrace.lib.php3
    - pclerror.lib.php3

  Aujourd'hui les librairies PclTrace et PclError sont obligatoires pour faire fonctionner
  PclTar.

  Les extensions de fichiers (.php3) peuvent �tre modifi�s (en .php par exemple) sans
  n�cessit� d'intervenir � l'int�rieur du fichier.

  Les fichiers peuvent �tre plac�s dans n'importe quel dossier pour peu que l'application
  ou le script appelant utilise un chemin d'appel valide.


2 - Installation
================

  PclTar 1.3 est distribu� sous trois formats :

    - Format Zip traditionnel (pcltar-1-3.zip),
    - Format GNU TAR compress� (pcltar-1-3.tgz),
    - Format PhpZip auto-extract (pcltar-1-3.piz).

  Les fichiers Zip and GNU TAR compress�s contiennent aussi le format PhpZip
  auto-extract.

  a. Archive Zip
     D�compressez l'archive Zip dans un dossier.
     Les fichiers sont dans le dossier 'lib' et peuvent �tre d�plac�s ailleurs.

  b. Archive GNU TAR compress�e
     D�compressez l'archive GNU TAR dans un dossier.
     Les fichiers sont dans le dossier 'lib' et peuvent �tre d�plac�s ailleurs.

  c. Auto-extract PhpZip archive
     T�l�chargez *** EN MODE BINAIRE *** l'archive PhpZip sur votre site Web dans
     le dossier souhait� 'mondossier'.
     Lancer l'extraction en appelant http://mondomaine.com/mondossier/pcltar-1-3.piz.php3
     Les fichiers sont dans le dossier 'lib' du dossier 'mondossier'.


3 - Nouveaut�s
==============

  En version 1.3.1 :

  - Suppression des appels de fonctions par r�f�rences

  En version 1.3 :

  - Ajout de la fonction PclTarExtractIndex()
  - Correction d'un bug avec l'archivage des dossiers. Parfois la taille des
    dossiers archiv�s �tait non nul ce qui entrainait une erreur lors de l'extraction.
    PclTar force d�sormais la taille � z�ro lorsqu'il s'agit d'un dossier. De m�me lors
    de l'extraction il ignore la taille �ventuellement incorrecte.
  - Modification de la fonction PclTarDelete() : Lorsque l'on donne le nom d'un dossier
    � supprimer, le dossier et les fichiers se trouvant dedans sont supprim�s.
    Avant la version 1.3 seulement l'entr�e concernant le dossier �tait supprim�e.
  - Correction d'un bug dans les propri�t�s d'ajout/suppression de chemin. Lorsque l'on
    indiquait un chemin � supprimer, cela se passait bien pour les fichiers et
    sous-dossiers, mais le dossier en lui-m�me n'�tait pas ignor�.
  - Correction d'un bug dans l'extraction d'un dossier : Le dossier est normalement cr��,
    mais le status de l'op�ration pour ce dossier �tait en 'write_erreor'.
  - Correction d'un bug sur la validit� des dates de derni�re modification des
    fichiers. Utilisation  plus syst�matique de clearstatcache().

  En version 1.2 :

  - Ajout d'une nouvelle fonction PclTarMerge(), qui permet d'ajouter � une archive le
    contenu d'une autre.
  - Ajout des propri�t�s "ajout de path/suppression de path" pour la fonction PclTarCreate().
  - Les archives g�n�r�es par PclTar supportent maintenant les dossiers vide. Avant la
    version 1.2, un dossier n'�tait ajout� que lorsqu'il y avait au moins un fichier dedans.
  - Optimisation du code de PclTarHandleAddList()

  En version 1.1 :

  - Ajout de la v�rification du checksum lors de l'extraction d'un fichier.
  - Am�lioration de la cr�ation des ent�tes POSIX. En version 1.0 PclTar utilisait un fichier
    temporaire pour calculer le checksum. Ce n'est plus le cas � partir de la version 1.2.
  - Ajout d'un champ "status" dans le tableau de description des propri�t�s d'un fichier.
    Les champs "link", "magic", "version", "uname", "gname", "devmajor" and "devminor" sont
    eux supprim�s car ils ne contiennent aucune information interessante.
  - Lors de l'extraction une v�rification est faite pour savoir si le fichier existe d�j� ou non.
    Si une erreur arrive lors de l'extraction le fichier est saut� et la fonction cherche �
    extraire le fichier suivant. Dans la version pr�c�dente l'extraction �tait arr�t�e.
  - Lors de l'extraction d'un fichier la date de derni�re modification est mise � jour avec
    celle m�moris�e dans l'archive.
    Notez que ce n'est pas le cas pour le mode (R/W) qui reste celui par d�faut.
  - Nouvelle fonction PclTarDelete($tarname, $filelist), qui supprime de l'archive les fichiers
    sp�cifi�s dans $filelist.
  - Nouvelle fonction PclTarUpdate(), qui remplace les anciens fichiers par les nouveaux
    (en fonction de la date de derni�re modification). Si le fichier n'existe pas il est
    ajout� en fin d'archive.
  - Le tableau contenant les propri�t�s d'un fichier a les champs suivants :
    filename (with path),
    size,
    mode (decimal value of the octal value),
    uid,
    gid,
    mtime (last modification date like time() function result),
    typeflag ("0" or "" = file, "5" = directory, "1" = link),
    status (ok, added, updated, not_updated, already_a_directory,
            write_protected, newer_exist, path_creation_fail, write_error)
  - Ajout d'une propri�t� "chemin � retirer" dans les fonctions d'extraction. Cela permet
    d'extraire un fichier ou un dossier dans un dossier diff�rent de celui qui a �t� m�moriz�.
  - Ajout de la focntion PclTarAddList()
  - Ajout du parametre $p_mode dans PclTarList()

3 - D�marrer avec PclTar
========================

  Pour utiliser PclTar, une application ou un script doivent inclure le fichier
  pcltar.lib.php3.
  PclTar utilisant deux librairies annexes (PclTrace et PclError), une configuration
  est n�cessaire pour que PclTar retrouve le chemin d'inclusion des deux librairies.
  Plusieurs solutions, au choix, sont possibles :

  - Inclure chaque librarie dans l'application/script :
    <?
    include ("my_lib_dir/pclerror.lib.php3");
    include ("my_lib_dir/pcltrace.lib.php3");
    include ("my_lib_dir/pcltar.lib.php3");
    [...]
    ?>

  - Donner � PclTar la connaissance du chemin d'inclusion :
    <?
    $g_pcltar_lib_dir = "my_lib_dir";
    include ("my_lib_dir/pcltar.lib.php3");
    [...]
    ?>

  - Modifier la variable $g_pcltar_lib_dir dans pcltar.lib.php3

  - Utiliser le chemin d'include par d�faut (configur� dans php.ini), sans oublier de
    modifier la variable $g_pcltar_lib_dir pour la mettre � ''.

  Il est � noter que le fichier pcltar.lib.php3 peut �tre inclu plusieurs fois sans
  impact autre qu'une l�g�re perte de performance.


4 - Manuel
==========

  PclTar d�finit des fonctions pour cr�er, ajouter, lister, d�truire et extraire des
  fichiers depuis une archive GNU TAR. Cette archive peut �tre compress�e ou non.

  Une description plus compl�te de PclTar est disponible sur
  http://www.phpconcept.net

  Chaque fonction est aussi document�e dans un ent�te associ�, directement dans
  le code source.


5 - Langage
===========

  PclTar a �t� d�velopp� en PHP3 mais est compatible avec PHP4. Les
  extensions de fichiers (.php3) peuvent �tre modifi� sans toucher � l'int�rieur
  des fichiers.

  Le code de PclTar est enti�rement document� en anglais.


6 - Probl�mes connus
====================

  Liste des probl�mes connus dans PclTar 1.0 (liste non exhaustive) :

  - Seuls les archives GNU TAR au format "header POSIX" sont support�es
  - Lors de l'extraction d'un fichier le checksupm de l'ent�te n'est pas v�rifi�
  - Lors de l'extraction d'un fichier la date de derni�re modification d'un
    fichier n'est pas compar� avec celle du fichier existant.
  - Lors de l'extraction d'un fichier les droits d'acc�s d'un fichier ne sont pas
    reconduits
  - Lors de l'archivage d'un dossier entier, le nom du dossier lui m�me n'est pas
    archiv� comme une entr�e ind�pendante
  - Lors de l'extraction de l'entr�e d�crivant un dossier, le dossier n'est cr�� que si
    au moins un fichier est archiv� pour ce dossier.

  Les bugs connus et les contournements possibles ou les versions de correction
  seront mis � jour sur le site http://www.phpconcept.net

  Merci d'y documenter les bugs que vous rencontrez afin qu'ils soient pris en compte
  dans les versions futures !

7 - License
===========

  La librairie PclTar 1.3 est distribu�es sous license GNU/GPL.
  Vous pouvez donc l'utiliser gratuitement.

  CEPENDANT, si vous publiez un script, une application, une librairie ou tout
  code incluant PclTar (entier ou partiel), VOUS DEVEZ :
  - Publier votre travail sous license GNU/GPL (c'est � dire gratuitement),
  - Indiquer quelque part dans la documentation (le fichier readme par exemple) que
    vous utilisez PclTar, faire r�f�rence � l'auteur et au site Web
    http://www.phpconcept.net

  J'appr�cierai aussi que vous m'envoyez un mail (vincent@blavet.net) afin que
  je sache que PclTar est utilis� quelque part (mais ce n'est pas obligatoire ;-) ).

  Pour plus d'information voir http://www.gnu.org


8 - Avertissement
=================

   Cette application a �t� cr��e de fa�on non professionnelle.
   Son usage est au risque et p�ril de celui qui l'utilise, en aucun cas l'auteur
   de ce code ne pourra �tre tenu pour responsable des �ventuels d�gats qu'il pourrait
   engendrer.
   Il est entendu cependant que l'auteur a r�alis� ce code par plaisir et n'y a
   cach� aucun virus ni malveillance.


9 - Auteur
==========

Ce code a �t� �crit par Vincent Blavet (vincent@blavet.net) sur ses temps de loisir.

